package main

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"gorasome/server/rsaencrypt"
	"log"
	"os"
	"time"
)

func genkey(c *gin.Context) {
	// 生成 RSA 密钥对
	privateKey, err := rsaencrypt.GenerateKeyPair(2048)
	if err != nil {
		log.Fatalf("无法生成密钥对: %v", err)
	}
	// 将私钥导出到文件
	privKeyPEM, err := rsaencrypt.ExportPrivateKey(privateKey)
	if err != nil {
		log.Fatalf("无法导出私钥: %v", err)
	}
	// 获取当前时间
	currentTime := time.Now()
	fileName := fmt.Sprintf("key_%s.txt", currentTime.Format("20060102_150405"))
	err = os.WriteFile(fileName, privKeyPEM, 0644)
	if err != nil {
		log.Fatalf("无法写入私钥到文件: %v", err)
	}
	publicKey := &privateKey.PublicKey

	// 导出公钥
	pubKeyPEM, err := rsaencrypt.ExportPublicKey(publicKey)
	if err != nil {
		c.JSON(500, gin.H{"error": "无法导出公钥"})
	}
	c.JSON(200, gin.H{"public_key": string(pubKeyPEM)})
}

func main() {
	// 创建一个默认的 Gin 路由器
	r := gin.Default()

	// 设置一个 GET 路由
	r.GET("/", genkey)

	// 启动 HTTPS 服务器，监听在 8080 端口
	r.RunTLS(":8080", "server.crt", "server.key")
}
